home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue39 / Clinic / NumbersU.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-07-09  |  1.5 KB  |  71 lines

  1. unit NumbersU;
  2.  
  3. interface
  4.  
  5. uses
  6.   WinProcs, WinTypes, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Edit1: TEdit;
  12.     Edit2: TEdit;
  13.     Edit3: TEdit;
  14.     Label1: TLabel;
  15.     Label2: TLabel;
  16.     Label3: TLabel;
  17.     procedure Button1Click(Sender: TObject);
  18.     procedure Edit1Change(Sender: TObject);
  19.   private
  20.     { Private declarations }
  21.   public
  22.     { Public declarations }
  23.   end;
  24.  
  25. var
  26.   Form1: TForm1;
  27.  
  28. implementation
  29.  
  30. {$R *.DFM}
  31.  
  32. procedure TForm1.Button1Click(Sender: TObject);
  33. begin
  34.   ShowMessage(FormatFloat('#,##0.00', Pi));
  35.   ShowMessage(FloatToStrF(Pi, ffNumber, 10, 2));
  36. end;
  37.  
  38. function StripNumberString(const Num: String): String;
  39. var
  40.   I: Integer;
  41. begin
  42.   Result := Num;
  43.  { Get rid of any currency string }
  44.   I := Pos(CurrencyString, Result);
  45.   if I > 0 then
  46.     Delete(Result, I, Length(CurrencyString));
  47.  { Get rid of any thousands separators string }
  48.   for I := Length(Num) downto 1 do
  49.     if Result[I] = ThousandSeparator then
  50.       Delete(Result, I, 1)
  51. end;
  52.  
  53. procedure TForm1.Edit1Change(Sender: TObject);
  54. var
  55.   E: Extended;
  56. begin
  57.   if Edit1.Text <> '' then
  58.   begin
  59.     { Get original number }
  60.     E := StrToFloat(Edit1.Text);
  61.     { Format it with thousands separators }
  62.     Edit2.Text := FloatToStrF(E, ffNumber, 10, 2);
  63.     { Now take the formatted number string, }
  64.     { and translate it back to a real float }
  65.     E := StrToFloat(StripNumberString(Edit2.Text));
  66.     Edit3.Text := FloatToStr(E)
  67.   end
  68. end;
  69.  
  70. end.
  71.